﻿using System.Data.Entity;
using Tinter.Models;

namespace Tinter.Infrastructure.Data.UnitOfWork
{
    /// <summary>
    /// This is a contract for 'Main Bounded-Context' Unit Of Work,
    /// you can use this contract for implementing the real
    /// dependency to your O/RM or, for creating a mock... 
    /// Also, setting this abstraction adds more information about 
    /// the existent sets in non generic repository methods.
    /// 
    /// This is not the contract for switching  
    /// your persistent infrastructure, of course....
    /// </summary>
    public interface IMainUnitOfWork : IQueryableUnitOfWork
    {
        IDbSet<AspNetUser> AspNetUsers { get; }

        IDbSet<MyExpense> MyExpenses { get; }

        IDbSet<MyExpenseProject> MyExpenseProjects { get; }
    }
}
